/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sismol.simulador;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import sismol.cartography.Linha;
import sismol.cartography.Onibus;
import sismol.data.GerenciadorBusca;
import sismol.data.GerenciadorEstimativa;
import sismol.data.GerenciadorFactory;

/**
 *
 * @author koji
 */
public class Simulador {

    private static Long time;

    public static void main(String[] args) {
        GerenciadorBusca gerenciadorBusca = GerenciadorFactory.getGerenciadorBusca();
        GerenciadorEstimativa gerenciadorEstimativa = GerenciadorFactory.getGerenciadorEstimativa();

        List<Linha> linhas = gerenciadorBusca.listarLinhas();

        System.out.println("-----------------------------------------------------------");
        System.out.println("");
        System.out.println("Início MAIN");
        System.out.println("");
        System.out.println("-----------------------------------------------------------");
        System.out.println("");
        System.out.println("Linhas cadastradas: ");
        System.out.println("");

        for (int i = 0; i < linhas.size(); i++) {
            Linha linha = linhas.get(i);
            System.out.println(" ["+i+"]  " + linha.getNome());
        }
        System.out.println("");
        System.out.println("-----------------------------------------------------------");

        Boolean selected = Boolean.FALSE;
        int i = 0;
        Scanner in = new Scanner(System.in);
        String command = "";

        while(!selected) {
            System.out.println("");
            System.out.print("Digite o número da linha que deseja simular: ");

            command = in.nextLine();
            try {
                i = Integer.parseInt(command);
                selected = Boolean.TRUE;
            } catch (Exception e) {
                System.out.println("Número inválido.");
            }
        }

        Linha linha = linhas.get(i);

        System.out.println("");
        System.out.println("Linha selecionada: " + linha.getNome());
        System.out.println("");
        System.out.println("-----------------------------------------------------------");

        List<Onibus> listaOnibus = (List<Onibus>) gerenciadorEstimativa.listaOnibusDaLinha(linha);

        List<Embarcado> embarcados = new ArrayList<Embarcado>();
        for (Onibus onibus : listaOnibus) {
            Embarcado embarcado = new Embarcado(onibus.getId(), linha);
            embarcados.add(embarcado);
        }

        int index = 0;

        while(true) {
            Embarcado embarcado = embarcados.get(index);

            System.out.println("");
            System.out.print("Pressiona qualquer tecla para continuar: ");
            
//            try {
//                Thread.currentThread().sleep(5000);
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
             
            command = in.nextLine();

            embarcado.step();

            index = (index + 1) % listaOnibus.size();
        }
    }

}
